package com.zhw.service;

import com.zhw.pojo.dto.CustomerLossQueryDTO;
import com.zhw.pojo.entry.Customer;
import com.zhw.pojo.dto.CustomerQueryDTO;
import com.zhw.pojo.PageBean;
import com.zhw.pojo.entry.CustomerLoss;
import com.zhw.pojo.entry.CustomerReprieve;

import java.util.List;
import java.util.Map;

public interface CustomerService {

    /**
     * 分页查询到客户的信息
     * @param customerQueryDTO
     * @return
     */
    PageBean page(CustomerQueryDTO customerQueryDTO);

    /**
     * 获取到当前所有地区
     * @return
     */
    List<Map<String, String>> getAddresses();

    /**
     * 添加一个新的客户
     * @param customer
     */
    void save(Customer customer);

    /**
     * 根据ID查询一个客户的信息
     * @param id
     * @return
     */
    Customer getByID(Integer id);

    /**
     * 修改一个用户
     * @param c
     */
    void update(Customer c);

    /**
     * 根据ID删除一个客户
     * @param id
     */
    void delete(Integer id);

    List<Map<String, String>> getCustomerName();


    /**
     * 分页查询客户流失管理信息
     * @param customerLossQueryDTO
     * @return
     */
    PageBean getLossPage(CustomerLossQueryDTO customerLossQueryDTO);

    /**
     * 根据ID查看流失信息
     * @param id
     * @return
     */
    CustomerLoss getLossByID(Integer id);

    /**
     * 根据流失ID查询到暂缓信息
     * @param id
     * @return
     */
    List<CustomerReprieve> getReprieveByLossID(Integer id);

    /**
     * 添加一个补救措施
     * @param customerReprieve
     */
    void add(CustomerReprieve customerReprieve);

    /**
     * 确认该客户流失
     * @param id
     */
    void checkLoss(Integer id);

    /**
     * 根据补救ID查询到当前补救措施
     * @param id
     * @return
     */
    CustomerReprieve getReprieveByID(Integer id);

    /**
     * 修改补救措施
     * @param customerReprieve
     */
    void updateReprieve(CustomerReprieve customerReprieve);

    /**
     * 根据ID删除措施
     * @param id
     */
    void deleteReprieveByID(Integer id);
}
